package com.wym.lottery.service;

import java.util.ArrayList;
import java.util.List;

import com.wym.lottery.dao.MyDatabaseHelper;
import com.wym.lottery.model.Bill;
import com.wym.lottery.model.Ticket;
import com.wym.lottery.util.CheckData;
import com.wym.lottery.util.CheckPayMoney;
import com.wym.lottery.util.CheckScope;

import android.app.Service;
import android.content.Intent;
import android.database.Cursor;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;

public class BaseService extends Service {

	private MyDatabaseHelper dbHelper;

	private MyBinder binder = new MyBinder();

	@Override
	public IBinder onBind(Intent intent) {

		return binder;
	}

	@Override
	public void onCreate() {
		dbHelper = new MyDatabaseHelper(this);
		super.onCreate();
	}

	public class MyBinder extends Binder {

		public void submitData(Ticket ticket) {

			dbHelper.insert(ticket);
		}

		public boolean insert(Bill bill) {
			dbHelper.verify(bill);
			dbHelper.insert(bill);
			return true;

		}

		public Ticket checkInputData(String str) {
			if (str.indexOf("-") != -1) {
				// 如果不加判断条件的话，强行分割不一定会分成两个String，然后通过下标访问可能会数组越界,所以要加异常处理
				String[] array_num = str.split("-", 2);
				String num_0 = array_num[0];
				String num_1 = array_num[1];
				int type = checkNum(num_0);
				// 如果输入的号码是符合类型的，而且金额是对的，就新建一个Ticket对象
				if (type != -1 & checkMoney(num_1) != -1) {
					// 如果是同上，就将数字排序
					String num = type < 4 ? CheckData.sort(num_0) : num_0;
					// 生成赔率
					String odds = CheckPayMoney.getMultiple(type);
					// 返回封装的对象
					return new Ticket(num, num_1, CheckScope.getScope(), type + "", odds);
				}
			}
			return null;

		}

		public List<Ticket> checkInputDatum(String str) {
			List<String> list = new ArrayList<String>();
			List<Ticket> tickets = new ArrayList<Ticket>();
			if (str.indexOf("-") != -1) {
				// 如果不加判断条件的话，强行分割不一定会分成两个String，然后通过下标访问可能会数组越界,所以要加异常处理
				String[] array_num = str.split("-", 2);
				String num_0 = array_num[0];
				String num_1 = array_num[1];
				list = CheckData.checkMoreNum(num_0);

				for (String string : list) {
					int type = checkNum(string);
					// 如果输入的号码是符合类型的，而且金额是对的，就新建一个Ticket对象
					if (type != -1 & checkMoney(num_1) != -1) {
						// 生成赔率
						String odds = CheckPayMoney.getMultiple(type);
						// 返回封装的对象
						tickets.add(new Ticket(string, num_1, CheckScope.getScope(), type + "", odds));
					}
				}
			}
			return tickets;

		}

		// 检查金额，如果不是全数字的话就返回错误代码-1
		private int checkMoney(String str) {
			if (CheckData.checkMoney(str))
				return Integer.parseInt(str) > 0 ? Integer.parseInt(str) : -1;// 得到的金额必须是正整数！
			else
				return -1;
		}

		// 检查数字，如果不符合规则的就返回错误代码-1
		private int checkNum(String str) {
			return CheckData.checkNum(str);
		}

		public Cursor getBillCursor(Bill bill) {
			return dbHelper.QueryData(MyDatabaseHelper.T_Bill, bill.getScope());

		}

	}

	@Override
	public void onDestroy() {
		dbHelper.close();
		super.onDestroy();
	}

}
